package cn.lcl.dao;

import cn.lcl.bean.PageBean;
import cn.lcl.bean.po.Student;

import java.sql.SQLException;
import java.util.List;

/**
 * 定义所有dao层的顶级接口，定义基本的增删改查方法,所有的dao都应该实现该接口
 * Created by licho on 2017/8/15 0015.
 */
public interface BaseDao<T,K> {
    /**
     * insert方法，返回自动增长的主键
     * @param vo
     * @return
     */
    public K add(T vo) throws SQLException;

    /**
     * 根据主键进行删除
     * @param key
     * @return
     */
    public boolean delete(K key) throws SQLException;

    /**
     * 根据主键查找vo对象
     * @param key
     * @return
     */
    public Student selectByKey(K key) throws SQLException;

    /**
     * 获取分页查询的结果
     * @return
     */
    public PageBean<T> getPageList() throws SQLException;

    /**
     * 根据vo中不为空的属性值更新表
     * @param vo
     * @return
     * @throws SQLException
     */
    public boolean update(T vo)throws  SQLException;
}
